package my.shadowsocks.common.encryption;

import java.io.ByteArrayOutputStream;

/**
 * @author fengbo
 * @date 2018/10/5
 */
public interface Crypt {

    /**
     * 编码
     * @param data 需要被编码的数据
     * @param stream 结果数据流
     */
    void encrypt(byte[] data, ByteArrayOutputStream stream);

    /**
     * 编码
     * @param data 需要被编码的数据
     * @param length 数据长度
     * @param stream 结果数据流
     */
    void encrypt(byte[] data, int length, ByteArrayOutputStream stream);

    /**
     * 解码
     * @param data 需要被解码的数据
     * @param stream 结果数据流
     */
    void decrypt(byte[] data, ByteArrayOutputStream stream);

    /**
     * 解码
     * @param data 需要被编码的数据
     * @param length 数据长度
     * @param stream 结果数据流
     */
    void decrypt(byte[] data, int length, ByteArrayOutputStream stream);
}
